package com.ibm.demo.mybatis;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @author ：HQ
 * @date ：Created in 2019/7/10 15:26 @description：
 */
public class CodeGeneration {

	/**
	 *
	 * @Title: main
	 * @Description: 生成
	 * @param args
	 */
	public static void main(String[] args) {
		AutoGenerator mpg = new AutoGenerator();

		// 全局配置
		GlobalConfig gc = new GlobalConfig();
		gc.setOutputDir(".");//
		// 输出文件路径
		gc.setIdType(IdType.AUTO);// 主键策略
		gc.setFileOverride(true); // 是否文件覆盖
		gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false（是否支持AR模式）
		gc.setEnableCache(false);// XML 二级缓存
		gc.setBaseResultMap(true);// XML ResultMap
		gc.setBaseColumnList(false);// XML columList
		gc.setAuthor("ZW");// 作者

		// 自定义文件命名，注意 %s 会自动填充表实体属性！
		gc.setControllerName("%sController");
		gc.setServiceName("%sService");
		gc.setServiceImplName("%sServiceImpl");
		gc.setMapperName("%sMapper");
		gc.setXmlName("%sMapper");
		mpg.setGlobalConfig(gc);

		// 数据源配置
		DataSourceConfig dsc = new DataSourceConfig();
		dsc.setDbType(DbType.POSTGRE_SQL);
		dsc.setDriverName("org.postgresql.Driver");
		dsc.setUsername("postgres");
		dsc.setPassword("123456Aa");
		dsc.setUrl("jdbc:postgresql://chow.vicp.cc:25432/postgres");
		mpg.setDataSource(dsc);

		// 策略配置
		StrategyConfig strategy = new StrategyConfig();
		// strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
		strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
		strategy.setInclude(new String[] { "gp_dbm_rel" }); // 需要生成的表
		// strategy.setDbColumnUnderline(true); //指定表名字段是否使用下划线

		strategy.setSuperMapperClass(null);

		mpg.setStrategy(strategy);

		// 包配置
		PackageConfig pc = new PackageConfig();
		pc.setParent(CodeGeneration.class.getPackage().getName());
		pc.setController("controller");
		pc.setService("service");
		pc.setServiceImpl("service.impl");
		pc.setMapper("mapper");
		pc.setEntity("entity");
		pc.setXml("pojo");
		mpg.setPackageInfo(pc);

		// 执行生成
		mpg.execute();

	}
}

